A user typically uses multiple computing devices up any of which may be used to operate on data. Where the same data is being operated on using multiple different computing devices, the data must be synchronized between the multiple computing devices. Otherwise and for example, any changes to data made by the user using one computing device is unavailable to the user when the user attempts to access the changes using a different computing device.
One approach that might be used is to use a central storage server and require that each computing device read and write to the central storage; however, there are several problems associated with such approach. For example, each computing device must be connected to the server in order to read and/or write to the central storage, which does not provide for a computing device being offline. Even where all of the computing devices are online, conflicts may occur when different devices attempt to access the same data simultaneously.